home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-05-15 | 4.8 KB | 128 lines |
- 1000 ' Birk Binnard receives EMAIL at COMPUSERVE #72356,556
- 1010 ' RBBS at (213) 410-0714
- 1020 ' ++++DEFRAG V 1.0 ++++ RBBS at (213) 973-2374
- 1030 ' RBBS at (213) 973-4497
- 1040 DEFINT A-Z:DIM N1$(128),COPY(128,2)
- 1050 KEY OFF:CLOSE:CLS:BLANKS$=STRING$(60," "):RESTART=0:L$=STRING$(20,205)
- 1060 ON KEY(1) GOSUB 1200'pick file
- 1070 ON KEY(2) GOSUB 1400'restart
- 1080 ON KEY(3) GOSUB 1270'copy files
- 1090 ON KEY(7) GOSUB 1420'delete files
- 1100 ON KEY(9) GOSUB 1520'DOS command
- 1110 ON KEY (10) GOSUB 1380'end
- 1120 ON KEY (11) GOSUB 1580'up
- 1130 ON KEY (12) GOSUB 1600'left
- 1140 ON KEY (13) GOSUB 1620'right
- 1150 ON KEY (14) GOSUB 1640'down
- 1160 FOR I=1 TO 10:KEY I,"":NEXT
- 1170 KEY 1,"PICK":KEY 2,"RESTRT":KEY 3,"COPY":KEY 7,"DELETE":KEY 9,"COMAND"
- 1180 KEY 10,"END":GOTO 1670
- 1190 '
- 1200 NOW=NOW+1:IF INDEX>=0 AND NOW<=NFIL THEN 1210 ELSE 1220'pick file
- 1210 IF COPY(INDEX,2)<0 THEN 1230
- 1220 NOW=NOW-1:BEEP:RETURN 2090
- 1230 COPY(NOW,1)=INDEX:COPY(INDEX,2)=NOW:SCOL=POS(0)-2
- 1240 LOCATE ROW,SCOL:COLOR 12:PRINT USING "###";NOW;:COLOR 7:COL=SCOL
- 1250 LOCATE ROW,COL:RETURN 2090
- 1260 '
- 1270 LOCATE MAXROW+4,1:PRINT"You have selected ";NOW;"of";NFIL;"files."
- 1280 LOCATE MAXROW+6,1:PRINT "Do you want to do the Copy operation? (y/n) -->";
- 1290 X$=INPUT$(1):PRINT X$:IF INSTR("Yy",X$)>0 THEN 1310
- 1300 LOCATE MAXROW+3,1:PRINT BLANKS$:LOCATE MAXROW+5,1:PRINT BLANKS$:GOTO 1360
- 1310 KEY OFF:GOSUB 2260:FOR I=1 TO NOW
- 1320 LOCATE 3,10
- 1330 PRINT"Copying file "+N1$(COPY(I,1))+" from "+SD$+" to "+TD$+" "
- 1340 CMD$="copy "+SD$+N1$(COPY(I,1))+" "+TD$:GOSUB 2210
- 1350 NEXT
- 1360 N=0:ROW=MINROW:COL=1:RETURN 2010
- 1370 '
- 1380 RETURN 2130'end program
- 1390 '
- 1400 CLS:RESTART=-1:CLOSE:KILL DIRFIL$:RETURN 1740'restart
- 1410 '
- 1420 LOCATE MAXROW+4,1:PRINT "You have selected";NOW;"files to DELETE."
- 1430 LOCATE MAXROW+6,1:PRINT"Do you want to do the Delete operation (y/n)?-->";
- 1440 X$=INPUT$(1):PRINT X$:IF INSTR("Yy",X$)>0 THEN 1460
- 1450 LOCATE MAXROW+3,1:PRINT BLANKS$:LOCATE MAXROW+5,1:PRINT BLANKS$:GOTO 1500
- 1460 KEY OFF:GOSUB 2260:FOR I=1 TO NOW'delete files
- 1470 LOCATE 3,10:PRINT"Deleting file "+N1$(COPY(I,1))+" from "+SD$+" "
- 1480 KILL SD$+N1$(COPY(I,1))
- 1490 NEXT
- 1500 CLOSE:KILL DIRFIL$:RETURN 1880
- 1510 '
- 1520 GOSUB 2260:LOCATE 3,10'DOS command
- 1530 INPUT "Enter DOS command -->",CMD$
- 1540 CLS:KEY OFF:GOSUB 2210:COLOR 12
- 1550 LOCATE 25,1,1,0,13:PRINT"Press any key to continue -->";:X$=INPUT$(1)
- 1560 COLOR 7:GOSUB 2260:CLOSE:KILL DIRFIL$:RETURN 1880
- 1570 '
- 1580 ROW=ROW-1:IF ROW<MINROW THEN ROW=MAXROW
- 1590 RETURN 2090
- 1600 COL=COL-16:IF COL<1 THEN COL=65
- 1610 RETURN 2090
- 1620 COL=COL+16:IF COL>80 THEN COL=1
- 1630 RETURN 2090
- 1640 ROW=ROW+1:IF ROW>MAXROW THEN ROW=MINROW
- 1650 RETURN 2090
- 1660 '
- 1670 KEY(1) ON:KEY(2) ON:KEY(3) ON:KEY(7) ON:FOR I=9 TO 14:KEY(I) ON:NEXT
- 1680 GOSUB 2260:MINROW=4
- 1690 LOCATE 4,10:PRINT"Enter work (RAM) Drive letter (no colon)-->";:LOCATE ,,1
- 1700 RD$="a:":D$=INPUT$(1):PRINT D$;:D=ASC(D$):IF D=13 THEN 1740
- 1710 IF D<97 THEN D=D+32
- 1720 IF D<97 OR D>100 THEN BEEP: GOTO 1690
- 1730 RD$=D$+":"' RAM disk
- 1740 LOCATE 6,10:PRINT"Enter Source Drive letter (no colon)-->";:LOCATE ,,1
- 1750 D$=INPUT$(1):PRINT D$;:D=ASC(D$):IF D<97 THEN D=D+3
- 1760 IF D<97 OR D>100 THEN BEEP: GOTO 1740
- 1770 SD$=D$+":"' source drive
- 1780 LOCATE 8,10:PRINT"Enter Target Drive letter (no colon)-->";:LOCATE ,,1
- 1790 D$=INPUT$(1):PRINT D$;:D=ASC(D$):IF D<97 THEN D=D+32
- 1800 IF D<97 OR D>100 THEN BEEP: GOTO 1780
- 1810 TD$=D$+":"' target drive
- 1820 IF RESTART OR RD$="a:" THEN 1880
- 1830 PRINT:PRINT:PRINT TAB(10);
- 1840 PRINT"Copying COMMAND.COM and SORT.EXE to work (RAM) disk."
- 1850 CMD$="copy a:command.com "+RD$:GOSUB 2210
- 1860 ENVIRON "COMSPEC="+RD$+"\COMMAND.COM"' use command.com on ram disk
- 1870 CMD$="copy a:sort.exe "+RD$:GOSUB 2210
- 1880 DIRFIL$=RD$+"dir.dat":NOW=0
- 1890 FOR I=1 TO 128:COPY(I,1)=-1:COPY(I,2)=-1:NEXT
- 1900 PRINT:PRINT TAB(10);
- 1910 PRINT"Reading and sorting directory entries for disk in drive "+SD$
- 1920 CMD$="dir "+SD$+"|"+RD$+"sort|"+RD$+"sort/+10>"+DIRFIL$:GOSUB 2210
- 1930 OPEN DIRFIL$ FOR INPUT AS #1
- 1940 PRINT:FOR I=1 TO 4:INPUT#1,A$:NEXT:NFIL=0' discard header lines
- 1950 IF EOF(1) THEN 1990 ELSE INPUT#1,A$:NFIL=NFIL+1:MID$(A$,9)="."
- 1960 N=INSTR(9,A$," "):IF N=10 THEN MID$(A$,9)=" "
- 1970 N=INSTR(1,A$," "):IF N>8 THEN 1980 ELSE A$=LEFT$(A$,N-1)+MID$(A$,9,4)
- 1980 N1$(NFIL)=LEFT$(A$,12):GOTO 1950
- 1990 NFIL=NFIL-2:N=0:COL=1:ROW=MINROW:IF NFIL>0 THEN 2010
- 2000 CLS:PRINT"The disk in drive "+SD$+" has no standard files.":GOTO 2100
- 2010 GOSUB 2260:PRINT "The files on drive "+SD$+" are:"
- 2020 N=N+1:LOCATE ROW,COL
- 2030 COLOR 12:IF COPY(N,2)<0 THEN PRINT " "; ELSE PRINT USING"###";COPY(N,2);
- 2040 COLOR 7:PRINT CHR$(27)+N1$(N);
- 2050 COL=COL+16:IF COL>80 THEN ROW=ROW+1:COL=1
- 2060 IF N<NFIL THEN 2020 ELSE IF COL=1 THEN ROW=ROW-1
- 2070 MAXROW=ROW:ROW=MINROW:COL=1
- 2080 PRINT:PRINT:PRINT"There are";NFIL;"files on the disk in drive ";SD$;
- 2090 INDEX=(ROW-MINROW)*5+(COL+15)/16:IF INDEX>NFIL THEN INDEX=-1
- 2100 KEY ON:LOCATE ROW,COL+2,1,0,13
- 2110 GOTO 2110'loop waiting for fkey interrupt
- 2120 '
- 2130 CLOSE #1:KILL DIRFIL$:IF RD$="a:" THEN 2190
- 2140 KILL RD$+"sort.exe":KILL RD$+"command.com"
- 2150 ENVIRON "COMSPEC=A:\COMMAND.COM"' use command.com on drive a
- 2160 KEY OFF:KEY 1,"LIST ":KEY 2,"RUN"+CHR$(13):KEY 3,"LOAD"+CHR$(34)
- 2170 KEY 4,"SAVE"+CHR$(34):KEY 5,"FILES":KEY 6,"SYSTEM":KEY 7,"EDIT "
- 2180 KEY 8,"CLS"+CHR$(13):KEY 9,"KEY ":KEY 10,"RENUM "
- 2190 GOSUB 2260:LOCATE 3,1,1,11,12:PRINT"DEFRAG ended.":KEY ON:PRINT:END
- 2200 '
- 2210 T1=PEEK(&H30):T2=PEEK(&H31)'execute shell for cmd$
- 2220 SHELL CMD$
- 2230 POKE &H30,T1:POKE &H31,T2
- 2240 RETURN
- 2250 '
- 2260 CLS:COLOR 14:PRINT TAB(10);L$;" D E F R A G ";L$:COLOR 7:RETURN
-